Addendum for Release 2.0 of the Object Engine. The Object Engine is an encapsulation of the functions found in Borland's Paradox Engine. Note that you MUST have and link with the Paradox Engine product for the Object Engine to be any use to you! This release marks the first SHAREWARE version of the Object Engine. I have gotten very good response to the software and, after the most recent work, feel that it is now mature enough to be worth a few nickels. Please see the manual.txt and register.txt files. New in this release: Network/Locking functions! NO MORE OELists: See below... NO MORE SET/GET functions for the class variables. Bug fixes (surprisingly, not many surfaced...) Character dates (i.e. "11/29/59") in addition to struct tm dates (toggle). Can now DELETE classes in the Gen2 program. Retrieval of "CLOSESTMATCH" records (thanks for suggestion to Mike Sagner). Better Windows/DOS commonality: the objeng constructor is now the same for both Windows and DOS. WIN.INI checking and updating: the object engine doesn't just crash your program if you ask for more resources than are found in WIN.INI (like the Paradox Engine does). Instead, it checks and changes WIN.INI where necessary before initializing the Engine. ---------------------------------- Why have the OELists been removed? The original idea was to provide direct (non-relational) links between persistant objects. The complexity in maintaining these links in a network environment (or even a non-network environment!) coupled with feedback about the importance of relational links for 3rd-party tools led me to eliminate the OEList. -------------------------------------------- Why have the Get/Set Functions been removed? In previous versions, you could only gain access to a persistant object's variables using Set and Get functions. This was done to support a full encapsulation of the persistant classes. However, the Set and Get functions have been removed in Version 2.0. While this detracts from the C++ "purity" of the library, the fact is that these classes exist for data i/o and not for in-class processing per se. In my own work, it has proven wise to remove this level of indirection and this is reflected in the current release of the library. ------------------------------ Initializing the Object Engine Important! you must create (via new) the objeng object before declaring ANY instances of any persistant class. As shown in the sample files, it is best to do this on the first line of your main() routine (again...BEFORE any static persistant class declarations). New to this release- you now can initialize the engine with network settings. In fact these are the only parameters you can set. The number of tables, cache size, etc. are all now set in the ObjEng constructor code (since you only set this once anyway). Of course, this also makes the source code more valuable... --------- Compiling I have compiled and run the sample application using Borland C++ 3.1. If you would like an MSVC version, you must register AND REQUEST the MSVC version. Under DOS You can see the Borlandc DOS switches I use in the MAKEFILE. Include the OBJENG.OBJ file when compiling under DOS. Under Windows I also use the library in a Windows application I am writing. You must include OBJENGW.OBJ (note the 'W') when linking. The Windows switches I use are: -ml -O2 -2 -ff- -Ob -d -WE -V -H= -w-par -weas -wpre -IC:\BORLANDC\INCLUDE;C:\ZAPP;C:\PXENG30 -LC:\BORLANDC\LIB;C:\ZAPP\LIB Some of the warning -off- switches are for the zApp library. ----------------- As always, if you find a bug, please let me know. Mark Brittingham